package hook_proxy

type (
	// 协议的收发处理
	ProtocolParser interface {
		// 客户端发给服务器处理
		Client2Server(msgBody []byte, customContext interface{}) []byte
		// 服务器发给客户端处理
		Server2Client(msgBody []byte, customContext interface{}) []byte
	}
	// 空的协议收发
	EmptyProtocolParser struct {}
)
// 客户端发给服务器的hook处理
func (epp *EmptyProtocolParser) Client2Server(msgBody []byte, customContext interface{}) []byte {
	return msgBody
}
// 服务器发给客户端的hook处理
func (epp *EmptyProtocolParser) Server2Client(msgBody []byte, customContext interface{}) []byte {
	return msgBody
}

// 协议解析 <协议id, 协议解析器>
var globalProtocolParsers = make(map[uint32]*ProtocolParser)

// 注册协议回调
func RegisterProtocolParser(protoId uint32, parser ProtocolParser) {
	globalProtocolParsers[protoId] = &parser
}

// 获取协议回调
func TryGetProtocolParser(protoId uint32) *ProtocolParser {
	parser, ok := globalProtocolParsers[protoId]
	if ok {
		return parser
	}
	return nil
}
